package com.pattern.strategy_youth.demo1;

/**
 * @author ：qs
 * @date ：Created in 2022/3/3
 * @description： 策略的创建
 *  如果策略类是有状态的，根据业务场景的需要，
 *  我们希望每次从工厂方法中，获得的都是新创建的策略对象，
 *  而不是缓存好可共享的策略对象，那我们就需要按照如下方式来实现策略工厂类。
 * @modified By：
 */
public class StrategyFactory2 {

    public static Strategy getStrategy(String type) {
        if (type == null || type.isEmpty()) {
            throw new IllegalArgumentException("type should not be empty.");
        }

        if (type.equals("A")) {
            return new ConcreteStrategyA();
        } else if (type.equals("B")) {
            return new ConcreteStrategyB();
        }

        return null;
    }
}
